import CryptoJS from 'crypto-js'
 //加密
function encryptWithAES256CBC(message) {
  return CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(secretKey), {
    iv: CryptoJS.enc.Utf8.parse(iv),
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  }).toString();
}
//解密
function decryptWithAES256CBC(message) {
  return JSON.parse(CryptoJS.AES.decrypt(message, CryptoJS.enc.Utf8.parse(secretKey), {
    iv: CryptoJS.enc.Utf8.parse(iv),
    mode: CryptoJS.mode.CBC,
    padding: CryptoJS.pad.Pkcs7
  }).toString(CryptoJS.enc.Utf8));
}
//签名
function md5Encrypt(text){
	return CryptoJS.MD5(text).toString()
}
//验签
function signVerification(){
	
}
 /**按ascii码从小到大排序
  *
  * @param obj
  * @returns {string}
  */
 function sort_ascii(obj) {
     let arr = new Array();
     let num = 0;
     for (let i in obj) {
         arr[num] = i;
         num++;
     }
     let sortArr = arr.sort();
     //let sortObj = {};    //完成排序值
     let str = '';             //自定义排序字符串
     for (let i in sortArr) {
         str += sortArr[i] + '=' + obj[sortArr[i]] + '&';
         //sortObj[sortArr[i]] = obj[sortArr[i]];
     }
     //去除两侧字符串
     let char = '&'
     str = str.replace(new RegExp('^\\' + char + '+|\\' + char + '+$', 'g'), '');
 
     return str;
     //return sortObj;
 }
 
// 使用示例
//const message = "需要加密的信息";
const secretKey = "IdTJq0HklpuI6mu8iB%OO@!vd^4K&uXW"; // AES-256密钥长度为32个字符
const iv = "$0v@krH7V2123456"; // AES-CBC模式需要一个16字节的初始向量
 

export default {
	encryptWithAES256CBC,
	md5Encrypt,
	decryptWithAES256CBC
}